Asynchronous messaging using a dynamic routing network

ABSTRACT

A dynamic content routing network routes update messages containing updates to properties of live objects from input sources to clients having the objects. Certain objects served to clients by a server are indicated as “live.” When the clients receive live objects, the clients identify the object IDs associated with the objects and register the object IDs with the routing network. The routing network maintains a registry of object IDs and clients. An input source provides an update message to the routing network containing the object ID and data specifying an update to a property of the object. The routing network routes the message to each client that has registered for the object ID contained in the message. Upon receipt of the message, a client updates the specified property of the live object.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119(e) of U.S.Provisional Application No. 60/256,613, filed Dec. 18, 2000, U.S.Provisional Application No. 60/276,847, filed Mar. 16, 2001, U.S.Provisional Application No. 60/278,303, filed Mar. 21, 2001, U.S.Provisional Application No. 60/279,608, filed Mar. 28, 2001, and U.S.Provisional Application No. 60/280,627, filed Mar. 29, 2001, all ofwhich are hereby incorporated by reference herein.

BACKGROUND

1. Field of the Invention

This invention pertains in general to transferring information throughdigital networks and in particular to transferring information forremotely updating content at client devices through the digitalnetworks.

2. Background Art

The Internet is a digital network of computers. An individual computeron the Internet is typically identified by an internet protocol (IP)address. A computer on the Internet sends a packet of information toanother computer by routing the packet to a logical port at thedestination computer's IP address. The destination computer interpretsthe packet according to one of several possible protocols determined bythe port to which the packet was sent.

The World Wide Web (the “Web”) is a collection of technology and contentavailable on the Internet that allows the content to be routed fromserver computers to particular destination computers. The Web includes alarge number of web pages residing on many different servers. Web pagescontain one or more files, or references to one or more files,specifying instructions for presenting the web page and content, such astext, images, applets, video, and/or audio.

Web pages use a variety of definitional and programming languages tocontrol how information is presented. The most fundamental of these isthe Hypertext Markup Language (HTML). HTML uses a system of “tags” tospecify how content should be displayed. Recent advances in HTMLintroduce “style sheets” which help separate content information fromdisplay information. HTML has also been modified and extended to providenew capabilities. For example, Extensible Markup Language (XML) addssemantic content to web pages. In addition, Dynamic HTML (DHTML) addssome dynamic content to web pages.

A web page may also include one or more programs for controlling how theweb page is displayed. For example, JAVA® applets and JAVASCRIPT®scripts may be used to control the display of a web page. In addition,DHTML uses scripts to control the dynamic content. Thus, a web pagedesigner can use applets and scripts to produce animation effects ormodify the display based on user interaction. For example, the designercan write a script that changes the color of a piece of text when a userclicks on a button.

Devices that display/execute web pages are often called “client devices”or simply “clients.” Client devices include personal computers,web-enabled set-top boxes and televisions, cellular telephones, personaldigital assistants and other handheld devices, and special-purposeweb-browsing appliances. Client devices typically employ a programcalled a “web browser” for interpreting the HTML or other displayinstructions in the web page and displaying the content accordingly.Most web browsers include special functionality, such as a Java VirtualMachine, for executing JAVA® applets and/or other applets or scriptsembedded in the web pages.

A client device specifies a web page or other document on the web usinga Uniform Resource Locator (URL). A URL has the form“service://server/path/file.” Here “service” refers to the protocol tobe used, such as the file transfer protocol (FTP) or the hypertexttransport protocol (HTTP). “Server” is the IP address of the servercontaining the page, and “path/file” specifies the particular web pageon the server.

The Web suffers from a substantial limitation with respect todynamically updating content in a web page at a client device. The Web'sonly mode of operation is for a client device to first request a pagefrom a server and then for the server to send the requested page to theclient device. Once the server delivers the page to the client, ittypically terminates its connection to the client, and does not retainany information about the client or the page that was sent. For thisreason, servers are typically “stateless.” As a result, client devicesdrive and control the flow of information around the Web. Whileclient-side control is appropriate in some situations, it does notpermit efficient updating of data at the client devices. For example, ifa web page contains information that may change, such as the score of abaseball game or a stock quote, the server has no way to inform theclient devices that are viewing the page of the change. Instead, theclient devices must ask the server for the updated information. However,the client devices do not know when the information on the web page haschanged, and thus do not know to ask for the update.

There are some simple web programming techniques that attempt to updatecontent on client device-side web pages. One approach that web designersuse is to rely on the client devices to periodically re-request webpages. This updating can be performed as the result of user action (suchas pressing the “refresh” button) or can be automated to occur on aparticular schedule (such as by using the HTML Meta Refresh tag to causethe client device to request the page every ‘X’ seconds). Although thistechnique provides client devices with more up-to-date information, itis very wasteful of resources. In particular, the web server must resendthe page even if nothing has changed, and, even when something haschanged, it must resend the entire web page rather than just the updatedinformation, which may be only a very small part of the page. Further,attempting to reduce unnecessary requests by decreasing the request rateresults in decreasing the currency of the data. This is an unalterabletrade off in a client-driven approach.

The performance of automatic refreshing can be improved somewhat byputting information that may change in a separate frame from informationthat is less likely to change, and only refreshing the separate frame. Afew web designers even write custom JAVA applets to limit refreshing toindividual components on a page, such as the score of a soccer game. Awillingness to go to such effort illustrates the serious drain ofresources caused by frequent refreshing.

Nevertheless, even custom JAVA applets are not a meaningful attack onthis problem. Custom applets require a large separate development effortfor each item on each page that might need to be updated. Moreimportantly, most custom applets still update content based uponclient-driven requests, although it is possible to design an applet thataccepts “pushed” messages. This solution is not scalable to provideupdated information for large numbers of client devices and for largenumbers of web pages.

Therefore, there is a need in the art for an efficient way to providedynamic content to a web page at a client device.

DISCLOSURE OF THE INVENTION

The above need is met by a dynamic content routing network that routesmessages containing data for updating properties of live objects toclients displaying web pages other representations of data containingthe live objects. The web server that initially provides the web pagesto the clients does not need to track which clients are currentlydisplaying the live objects. Instead, the information provider or adynamic content provider (generically referred to as an “input source”)that provided the live object simply sends an update message to therouting network. The routing network maintains the mappings between thelive objects and the clients that are currently displaying them. Thisrouting utilizes bandwidth efficiently because the update messages areprovided to the clients only when the live objects change.

In one embodiment, a web server associated with an input source providesweb pages to clients. The web pages contain live objects identified byobject IDs. An activation module at the client examines the web page andidentifies the object IDs of the live objects on the web page. Then, theactivation module establishes a connection with the routing network andregisters for the object IDs. The routing network maintains a registryindicating which clients have registered for which live objects.

An input source provides update messages to the routing network. Anupdate message preferably contains an object ID and data for updating aproperty of the identified live object. The routing network determinesthe clients that have registered for the identified object ID, and thenroutes the message to those clients. The activation modules at theclients receive the message and update the properties of the live objectas specified by the data in the message.

The features and advantages described in this summary and the followingdetailed description are not all-inclusive, and particularly, manyadditional features and advantages will be apparent to one of ordinaryskill in the art in view of the drawings, specification, and claimshereof.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a high-level block diagram illustrating an environmentcontaining a dynamic content routing network;

FIG. 2 is an interaction diagram illustrating interactions among aserver, information provider, dynamic content provider, client, androuting network to update a property of a live object on a web page;

FIG. 3 is a high-level diagram graphically indicating the many-to-manymapping performed by the routing network;

FIG. 4 illustrates two different web pages containing sports scores;

FIG. 5 is a block diagram illustrating an input source and the toolsavailable to it for generating the update messages;

FIG. 6 is a flow chart illustrating the steps performed by an embodimentof an activation module;

FIG. 7 is a block diagram illustrating a lower-level view of the routingnetwork according to an embodiment of the present invention; and

FIG. 8 is a flow chart illustrating steps performed by a node in acluster to perform object-based routing of a message received from aninput source via the gateway.

The figures depict an embodiment of the present invention for purposesof illustration only. One skilled in the art will readily recognize fromthe following description that alternative embodiments of the structuresand methods illustrated herein may be employed without departing fromthe principles of the invention described herein.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 is a high-level block diagram illustrating an environment 100containing a dynamic content routing network 110 (hereafter referred toas the “routing network”). The environment 100 also contains a server112 in communication with a client 114, an information provider 108, anda dynamic content provider 116. Although a typical environment 100 willhave hundreds of servers 112 and information providers 108, thousands(or even millions) of clients 114, and multiple dynamic contentproviders 116, FIG. 1 illustrates only one of each of these entities inorder to enhance the clarity of this description.

The server 112, client 114, information provider 108, dynamic contentprovider 116, and routing network 110 are preferably in communicationvia conventional communications links 117 such as those comprising theInternet. The communications links 117 include known wiredcommunications media, such as dedicated or shared data, cable televisionor telephone lines, and/or known wireless communications media, such ascommunications over the cellular telephone network using protocols suchas the global system for mobile communications (GSM), code divisionmultiple access (CDMA), time division multiple access (TDMA), etc.

In one embodiment, the entities may each be in communication with one ormore Internet Service Providers (ISPs) (not shown) that provide eachentity with access to other computers on the Internet. In addition, theserver 112, client 114, information provider 108, dynamic contentprovider 116, and routing network 110 are preferably each identified byat least one Internet Protocol (IP) address such as “66.35.209.224.” TheIP address may also have one or more domain names associated with it,such as “bangnetworks.com.” Alternative embodiments of the presentinvention may use alternative addressing schemes and/or namingconventions instead of, or in addition to, those described herein. Forexample, embodiments wherein one or more of the clients are cellulartelephones or other portable devices may rely on different addressingschemes.

Preferably, the information provider 108 provides web pages or otherrepresentations of data to the server 112. The web pages contain one ormore “live objects,” which are designated to be teal-timedynamically-updateable objects. Each live object is identified by anobject identifier, or object ID. Preferably, the server 112 provides theweb pages 118 to multiple clients 114. The clients 114 contact therouting network 110 and register for update messages for the object IDson the web page. The routing network 110, in turn, preferably maintainsa registry indicating which clients have registered for which objectIDs.

The information provider 108 and/or dynamic content provider 116 sendupdate messages to the routing network 110. These messages can be sentany time the information provider 108 or dynamic content provider 116wants to update a property of a live object. Each update messagepreferably identifies a live object and contains data for updating aproperty of the identified live object. The routing network 110 accessesthe registry and determines which clients have registered for theidentified object. Then, the routing network 110 routes the updatemessage to the appropriate clients. Upon receipt of an update message,the clients 114 update the specified property of the live object.

The routing network 110 provides an efficient one-to-many mapping ofobjects to clients (and by inference of information, a many-to-manymapping of information providers 108/dynamic content providers 116 toclients) through object-based routing. Messages provided by theinformation provider 108 and/or dynamic content provider 116 to therouting network 110 are not routed to the clients 114 based entirely ona specified destination; more specifically, they are not routed based onthe IP address of the client, as in conventional IP routing schemes.Instead, the messages are routed based on the live objects referenced bythe message.

The mapping and object-based routing provided by the routing network 110allow the information provider 108 and dynamic content provider 116 toupdate properties of live objects at a dynamically changingcross-section of clients in real-time, without requiring the informationprovider or dynamic content provider to track the clients or web pagesbeing viewed by the clients. The clients 114, in turn, do not need tohave any a priori knowledge of object IDs-they “discover” which IDs theyshould register when they receives the web pages 118 from the server112.

Object-based routing also allows information providers 108 todynamically update content on web pages without requiring the clients114 to re-request the content, and without requiring the informationproviders 108 or servers 112 to maintain connections with the clients.In this manner, significantly more clients can receive updated contentfrom a given information provider 108 than would be possible utilizingconventional client-side request-driven transmission controlprotocol/Internet Protocol (TCP/IP) connections between the clients andthe server 112.

Turning now to the individual entities illustrated in FIG. 1, the server112 is preferably a conventional computer system configured to act as aweb server and serves web pages 118 and other data representations toclients 114. The web pages 118 provided by the server 112 are associatedwith one or more information providers 108.

An information provider 108 is an entity providing one or more web pages118, information contained in web pages, and/or other representations ofdata served by the server 112. The information provider 108 preferablyhas a conventional computer system coupled to the Internet. In oneembodiment, the server 112 is directly controlled by the informationprovider 108 (e.g., the server is physically located at the informationprovider and/or is dedicated to serving only the information provider'sweb pages). In this embodiment, the server 112 and information provider108 can be treated as the same entity. In an alternative embodiment, theserver 112 serves web pages from multiple information providers.

As is known in the art, the web pages 118 and other content on theserver 112 are specified by uniform resource locators (URLs) having theform “service://server/path/web page.” Typically, web pages 118 areobtained via the hypertext transport protocol (HTTP) and thus anexemplary URL for retrieving the web page “b1.html” from the web serverhaving the domain name “www.bangnetworks.com” is“http://www.bangnetworks.com/news/b1.html.”

As used herein, a “web page” is a block of data available from theserver 112. In the simplest case, a web page is a file written in thehypertext markup language (HTML). The web page may also contain or referto one or more other blocks of data, such as other files, text, images,applets, video, and/or audio. In addition, the web page may containinstructions for presenting the web page and its content, such as HTMLtags and style sheets. The instructions may also be in the ExtensibleMarkup Language (XML), which is related to HTML and adds semanticcontent to web pages or the Dynamic HTML (DHTML), which adds somedynamic content to web pages. Additionally, the instructions may takethe form of one or more programs such as JAVA® applets and JAVASCRIPT®and/or DHTML scripts.

As used herein, the phrase “web page” also refers to otherrepresentations of data served by the server 112 regardless of whetherthese data representations include characteristics of conventional webpages. These data representations include, for example, applicationprograms and data intended for the web browser 120 or other applicationprograms residing at the clients 114 or elsewhere, such as spreadsheetor textual (e.g., word processing) data, etc.

In a preferred embodiment, objects at the client, such as web pages andelements of web pages, can be designated as “live” by the informationprovider 108. Properties of a live object can be dynamically updated inreal-time at the client 114 by the information provider 108 or anotherentity acting on behalf of the information provider. As used herein, an“object” is any datum or data at the client 114 that can be individuallyidentified or accessed. Examples of objects include elements of webpages such as text characters and strings, images, frames, tables,audio, video, applets, scripts, HTML, XML, and other code forming theweb page, variables and other information used by applets, scriptsand/or code, URLs embedded in the web page, etc. Application andoperating system constructs are also objects. For example, cells ofspreadsheets, text in word processor documents, and title bars andmessages displayed by the operating system or applications are objects.Preferably, multiple objects can be grouped together into a single,logical object. Thus, an object can be defined at any desired or usefullevel of granularity.

Since content on a web page is conceptualized and organized by “object,”the present invention essentially abstracts web pages and web pagecontent, and other modules and/or functionality at the client 114, awayfrom the HTML code or other conventional representation. Thisabstraction allows the information provider 108 to update a property ofan object without concern for the location, display format, or otherspecifics of how the data is being represented at the client 114.

Live objects have associated “properties” which include any modifiabledata related to the object or referenced with respect to the object. Theinformation provider 108 typically, but not necessarily, providesinitial settings for the properties of live objects provided to theclient 114. The properties may or may not affect the visualrepresentation of the object in the web page or other datarepresentation. A property may affect an internal aspect of the objectand, thus, a change to the property may not have any direct effect on aweb page containing the object. For example, the property may affectwhether particular aspects of the object are modifiable, how the objectresponds to user input or other stimuli, etc. Additionally, a propertymay also have a direct effect on how the object is displayed at theclient 114. For example, the property may affect the content, color,typeface, size, formatting, or other attribute of text, images, or otherdata displayed by the object. Other properties may occupy parts of thespectrum between having no effect on the visible representation of theobject and having a direct effect on the visible representation of theobject. For example, a web page showing scores of football games mayinclude a list of games and the current scores of the games as of thetime the server 112 serves the web page. The list of games, subset ofgames to be displayed, and the scores of the games can be designated aslive objects (or properties of a single live object) and updated asnecessary or desired.

A property can also preferably include instantiating an instance of theobject or invoking functionality of the object. For example, a propertyof a browser window object may include functionality for instantiatinganother browser window. This function can be invoked as a logical changeto a property of the object. The second browser window can be referencedthrough the original browser window (i.e., object) or designated as anew live object.

An information provider 108 or other entity preferably updates a liveobject at a client 114 via an update message. In general, an updatemessage identifies the live object and, if necessary, the property ofthe live object, and contains data for updating the property. In oneembodiment, the data may be the actual value for the property orexecutable code for causing the object's property to be updated. Forexample, the data may be a simple numerical or textual value, e.g., “4,”to which the property should be set, and/or the data may be JAVASCRIPT®code or a call to a JAVASCRIPT® function at the client that effects thedesired change to the property of the object.

The update message preferably implicitly or explicitly identifies ahandler at the client 114 for use in updating the live object'sproperty. In one embodiment, the client 114 utilizes a default handlerwhen the message implicitly specifies the handler (e.g. when the messagedoes not identify a specific handler). In one embodiment, if the updatemessage specifies the actual value for the property, a default handlergenerates JAVASCRIPT® code for changing the property to the specifiedvalue. If the data in the update message are JAVASCRIPT® code, thedefault handler does not perform any processing of the code. In eithercase, the default handlers preferably use LiveConnect to execute theJAVASCRIPT® code in a Java Virtual Machine (JVM) 122 at the client 114and thereby update the property of the live object.

For certain objects and/or data types, the default handlers are notappropriate. In these cases, the message preferably explicitlyidentifies a handler for performing the update. For example, the messagemay explicitly specify a function to call on the data or the message mayexplicitly identify the environment in which the data should beexecuted. For example, the data in the update message may include codefor execution by a software “plug-in” such as MACROMEDIA FLASH® and themessage may explicitly identify FLASH as the handler.

The information provider 108 preferably designates an object as “live”by including a unique identifier for the object, the object ID, in theweb page or other data representation provided to the client 114. In oneembodiment, the information provider 108 encodes the object ID in anobject's corresponding HTML “ID” attribute using the following HTMLexpression:

-   -   ID=“elementIdentifier, ”        where “elementldentifier” is the object ID and is preferably a        string. The string can encode any information desired by the        information provider 108 or other entity establishing the object        ID and in one embodiment is a simple textual and/or numeric        identifier. In one embodiment, the information provider 108        begins the object ID with a predefined token, such as “Bang$,”        in order to distinguish live objects from other objects that        happen to have defined ID attributes. For example, an object can        have the object ID “Bang$elementIdentifier.”

In the preferred embodiment, each information provider 108 optionallyencodes a unique information provider ID in its object IDs in order toprevent naming collisions between the object IDs of differentinformation providers. In one embodiment, the information provider ID isa textual and/or numeric identifier. The information provider 108 mayspecify the information provider ID and the object ID as part of ahierarchical namespace. For example, in one embodiment objects are namedas follows: “$namespace1$[namespace2$ . . . $namespaceN]objectId,” where“$namesapce1” is the information provider ID and the “$” operates as thename separator and defines additional optional levels of a namespacehierarchy. One embodiment of the system 100 supports typical directoryservices functionality. For example, two dollar sign charactersappearing together, “$$,” refers to the top level of the namespacehierarchy.

Thus, the object ID for a live object is preferably formed from acombination of the predefined token, the information provider IDnamespace, and a value assigned by the information provider 108. Forexample, the object ID for a live object representing the real timeprice of a stock having the symbol “BANG” might be:“Bang$$informationProviderID$equities$realtime$bang.” In this example,“Bang$” is the predefined token that signifies a live object,“$informationProviderID” is the ID identifying the information provider,“$equities$realtime$” defines levels of a namespace hierarchy, and“bang” identifies the specific object.

In some embodiments and situations, the object ID utilizes relativenames. For example, an information provider 108 referring to its ownobject IDs is implicitly in its own namespace. Accordingly, theinformation provider 108 does not need to include the informationProvider ID in the object IDs it utilizes internally. In one embodiment,the information provider ID is not explicitly encoded into the objectID. Instead, the information provider ID is encoded elsewhere in the webpage in order to provide scope to the page's object IDs.

In one embodiment, the object ID identifies a point (i.e., a node in atree) in a Document Object Model (DOM) representation of a web page orother document at the client 114. The DOM is a platform- andlanguage-neutral interface that represents a document as a hierarchy ofobjects. The DOM also provides an interface that allows programs andscripts to dynamically access and update properties of the objects.Object properties can be inherited by descendent objects.

In this embodiment, the client 114 preferably executes an update messagein the context of the specified point in the DOM representation. Theupdate may specify a change to a property of the object at theidentified point. The update also may specify a change to a parent ordescendent of the object at the identified point. In each case, theupdate is executed relative to the specified point in the DOMrepresentation. In one embodiment, points in the DOM representationspecify how to update properties of live objects located at thosepoints. Thus, the same update may be interpreted differently dependingupon the identified live object's location in the DOM representation.

For example, assume there is an object in the DOM representationidentified as “window.document.frame[3].ObjectID.” Also assume that theobject has an “innerText” property located at“window.document.frame[3].ObjectID.innerText” that specifies the textdisplayed by the object. An update message can change the text displayedby the object by specifying “ObjectID” and the new value for theinnerText property.

An advantage of utilizing object IDs to specify objects is that theinformation provider 108 or other entity providing the update messagecan access and change properties of objects without knowing the object'sactual location in the DOM representation. Indeed, the object may be indifferent locations in different DOM representations and/or in multiplelocations in the same DOM representation. In any of these cases, theupdate message will change the specified properties of all of theobjects having the given object ID.

Depending upon the particular embodiment of the environment 100, theinformation provider 108 and/or the dynamic content provider 116provides update messages to the routing network 110. The dynamic contentprovider 116 is preferably a conventional computer system operated by anentity that provides real-time information, such as stock prices and/orsports scores. In one embodiment, the information provider 108 receivesupdated properties for the live objects from the dynamic contentprovider 116 or another source (or generates the updated propertiesinternally). Then, the information provider 108 sends an update messagespecifying the object ID and the change to the object property to therouting network 110. In this embodiment, the dynamic content provider116 may be absent from the environment 100.

In another embodiment, the dynamic content provider 116 provides theobject IDs for live objects to one or more information providers 108 andthe information providers 108 distribute the live objects to the clients114. Then, the dynamic content provider 116 sends messages specifyingthe changes to the properties of the live objects to the routing network110. For example, the dynamic content provider 116 distributes an objectID associated with the score of a particular baseball game to theinformation providers 108. Then, the dynamic content provider 116 sendsa message specifying the object ID and an update to a property of theobject that controls the displayed score of the particular baseball gameto the routing network 110. These two embodiments are not mutuallyexclusive and, therefore, some updates may be provided to the routingnetwork 110 by the information provider 108 while others are provided bythe dynamic content provider 116.

The client 114 is a device that retrieves web pages 118 and/or otherinformation from the server 112. In one embodiment, the client 114 is aconventional personal computer used by a person to access information onthe Internet. In alternative embodiments, the client 114 is a differentconsumer electronic device having Internet connectivity, such as anInternet-enabled television, a cellular telephone, a personal digitalassistant (PDA), a web browsing appliance, etc. The client 114preferably, but not necessarily, has an associated display device.

The client 114 preferably executes a web browser 120, such as MICROSOFTINTERNET EXPLORER®, for retrieving web pages and displaying them on thedisplay device. In embodiments where the client receives datarepresentations from the server 112 other than conventional web pages,the web browser 120 does not necessarily share similarities withconventional web browsers. Preferably, the web browser 120 contains aJVM 122 for executing JAVA® applets and/or scripts. The web browser 120also preferably contains Dynamic HTML capabilities, such as support forJAVASCRIPT® (or another scripting language, such as VBScript) and theDocument Object Model (DOM), and enables communications between JAVA®and the scripting languages. In one embodiment, the web browser 120supports the LiveConnect standard for enabling communication betweenJAVA® applets and scripts written in the supported scripting languages.The web browser 120 can also be extended through software plug-ins suchas MACROMEDIA FLASH®, REAL NETWORKS REALPLAYER®, and/or APPLEQUICKTIME®. In alternative embodiments, the functionality of the JVM 122and/or other aspects of the web browser 120 are provided by one or moreother functional units within the client 114. The term “module” is usedherein to refer to software computer program code and/or any hardware orcircuitry utilized to provide the functionality attributed to themodule. The web browser 120 and JVM 122 are examples of modules in theclient 114.

In some embodiments, the client 114 does not necessarily have a displaydevice, web browser 120 and/or other components associated with atypical consumer device. The client 114, for example, may be a dedicatedpurpose device having certain aspects of web connectivity such as anembedded HTTP client in a web-enabled appliance or in a controller foran automobile, audio-visual equipment, or some other device.

A web page 118 provided from the server 112 to the client 114 preferablyincludes instructions for enabling the live objects on the web page. Theinstructions cause the client 114 to automatically and transparently(i.e., without user interaction) contact the routing network 110 anddownload an activation module 124 for activating the live objects. Inone embodiment, the instructions comprise a URL specifying the locationof the activation module 124 at the routing network 110. In analternative embodiment, the client 114 obtains the activation module 124from the server 112 or another source.

The activation module 124 preferably contains JAVA® instructions forexecution by the JVM 122. However, alternative embodiments of the module124 may encode the instructions in the web page 118 and/or theactivation module 124 using different languages and/or techniques. Forexample, the instructions and/or activation module 124 can be embeddedin the web browser 120 or operating system, either as native code or asplug-ins. In these alternative embodiments, the web browser 120 does nothave to download the activation module 124 from an external source.

The activation module 124 preferably registers object IDs from the webpage 118 downloaded by the client 114 with the routing network 110 andupdates the live objects in response to update messages received fromthe network. The routing network 110 records the registrations in theregistry 125. The client's registrations preferably remain in effect aslong as the client is displaying the associated web page 118, althoughother embodiments of the system 100 may use different criteria fordetermining when to terminate the client's registrations.

FIG. 2 is an interaction diagram illustrating interactions among theserver 112, information provider 108/dynamic content provider 116(generically referred to as an “input source 210”), client 114, and therouting network 110 to update a property of a live object. Initially,the client 114 sends 212 a web page request to the server 112. Inresponse, the server 112 provides 214 to the client 114 the web pagecontaining or otherwise identifying the one or more live objects.Instructions encoded in the web page preferably cause the client 114 totransparently request 216 the activation module 124 from the routingnetwork 110. In response, the routing network 110 sends 218 theactivation module 124. The client 114 executes 220 the activation module124, which identifies the object IDs of the live objects at the clientand registers 222 the object IDs with the routing network 110. Therouting network 110 updates 223 its registry to identify the object IDsfor which the client 114 has registered.

At some point, the input source 210 sends 224 an update message to therouting network 110 in order to change a property of a live object atthe client 114. In one embodiment, the message from the input source 210to the routing network 110 contains only a single object ID and anupdate to a property of the identified object. In another embodiment,the message contains multiple object IDs and the corresponding propertyupdates. In this latter embodiment, the message may have an associated“Batch ID” that identifies the message as having multiple object IDs andupdates. Preferably, the information provider 108 can include a batch IDin a web page 118 in the same manner as including an object ID.Likewise, the client 114 can preferably register for a batch ID with therouting network 110 in the same manner as an object ID. In fact, thebatch ID can be the same as the object ID so that the client 114registers for both batch and non-batch messages by registering one ID.Alternatively, separate procedures can be established for registeringbatch messages. The client 114 preferably processes the componentmessages of a batch as if each message were delivered separately.

The routing network 110, in turn, routes 226 the message to each client114 that has registered for the specified object ID, preferably byutilizing standard Internet communications protocols, such as IPaddresses, etc. The activation module 124 at the client 114 processesthe message and updates 228 the property of the identified live object.If live objects having the same-object ID appear in multiple locationsat the client 114 (e.g., at multiple locations on a web page beingdisplayed at the client), the activation module 124 preferably updateseach of the live objects having the specified ID. As a result, therouting network 110 allows live objects at the client 114 to bedynamically updated. Preferably, this routing and updating happensquickly enough to be considered “real-time” for the purposes of theinput source 210.

This update process, indicated within the dashed box 230 in FIG. 2, canrepeat an indefinite number of times and is fully asynchronous as to theinformation provider 210 and client 114. For example, the input source210 may send regular update messages to the routing network 110 as thescore of a sporting event changes or a stock price fluctuates, but maystop sending update messages once the sporting event ends or stockmarket closes. When the client 114 ends the display of a web pagecontaining the live object, or otherwise no longer desires to receiveupdate messages, the client preferably closes 232 the connection withthe routing network 110. The routing network 110, in turn, updates 234the registry 125 to remove the client's object registrations. In anotherembodiment, the client 114 sends messages to the routing network 110that selectively register and/or de-register the client from one or moreobjects yet leaves the connection open in order to receive updatemessages pertaining to other objects.

FIG. 3 is a high-level diagram graphically indicating the many-to-manymapping performed by the routing network 110. Multiple input sources(labeled 210A-C) send update messages to the routing network 110. Eachupdate message preferably specifies at least one object ID and an updateto a property of the identified object. The routing network 110, inturn, selectively routes the update messages to the clients 114 thathave registered for the given object ID from the given input source 210.In FIG. 3, assume for example that clients 312A and 312B have registeredfor a given object ID while the other clients have not registered forthe object ID. Accordingly, the routing network 110 routes the updatemessage to clients 312A and 312B, but does not route the message toclients 312C-312H.

FIG. 4 illustrates an example of the capabilities of the dynamic contentrouting network 110. FIG. 4 illustrates two different web pages 410, 412containing sports scores. Although the web pages are formatteddifferently, each page contains the same scores for two professionalfootball games and two professional baseball games. Web page 410contains all four games under the heading “Local Sports Scores” whileweb page 412 contains the baseball games under the heading “BaseballScores” and the football games under the heading “Football Scores.”

There are various ways to internally represent the games and scores inthe web pages using live objects. In one embodiment, a “game” object isdefined having properties for the two teams involved in the game and thescore associated with each team. The game object is placed at a selectedposition in the web page and the properties of the object cause theinformation about the game to be displayed on the page. In anotherembodiment, “team” and “score” objects are defined, with the team objecthaving a property defining the name of a team and the score objecthaving a property defining a score. In this second embodiment, the teamand score objects are placed at selected locations on the page so thatthe proper teams and scores are aligned when the page is rendered. Inyet another embodiment, an object is defined having properties for thename of one team and a score associated with that team. Then, pairs ofthe objects are placed in the page in the proper alignment to indicatethe games and scores. In another embodiment, an object is defined havingproperties specifying names of two teams and a separate object isdefined having properties specifying two scores. In this lastembodiment, the two objects are placed in the page so that the names ofthe teams align with the associated scores. Obviously, additionalvariations of these representations are possible.

Assume for the example of FIG. 4 that the names of teams in a game arespecified by a “names” object having properties for the two team namesand the scores in the game are specified by a “scores” object havingproperties for two scores. In web page 410, a names object 414 havingproperties set to identify the “SF 49ers” and the “STL Rams” is locateddirectly under the “Local Sports Scores” heading. A scores object 416having a property set to identify the score of the game as “42” to “7”is directly to the right of the names object 414. In web page 412, theproperties of the second names object 418 identify the same game usingslightly different terminology: “SF” and “STL.” However, this namesobject 418 is aligned with the same scores object 416 as is utilized inweb page 410.

Thus, the same scores object 416 is utilized in different positions ineach web page 410, 412. In order to update the score of the SanFrancisco 49ers vs. St. Louis Rams football game on both web pages, theinput source 210 simply sends an update message to the routing network110 specifying the object ID for the scores object 416 and the update tothe score property. The routing network 110 routes the update message tothe appropriate clients 114, and the clients update the appropriatescore regardless of the particular page layout.

The input source 210, i.e., the information provider 108 and/or dynamiccontent provider 116 can use a variety of tools to generate the updatemessages. FIG. 5 is a block diagram illustrating an input source 210 andthe tools available to it for generating the update messages. Othertools can be utilized in addition to or instead of the ones describedherein.

Preferably, the tools allow the input source 210 to access anapplication programming interface (API) provided by the routing network110 for accepting messages. In one embodiment, the messages sent by theinput source 210 are in the same format as utilized by the activationmodule 124 at the client 114. In an alternative embodiment, the messagesprovided to the routing network 110 are in a different format and therouting network translates the messages into the format utilized by theactivation module 124.

In one embodiment, the input source 210 utilizes a data pump module 510to access the API. The data pump module 510 reads an extensible markuplanguage (XML) file containing one or more object IDs and the new valuesfor the identified objects at regular intervals and automaticallygenerates API calls that send messages representing changes to objectproperties to the routing network 110. In another embodiment, the datapump module 510 is event-driven and reads the XML file in response to achange in the file or some other occurrence.

In another embodiment, the input source 210 utilizes a director consolemodule 512 to access the API. Preferably, the director console module512 presents an administrator with a graphical interface displaying thecontents of the web page 118. For example, the administrator may use thedirector console 512 to edit textual data, images, and/or any objects orproperties of objects on the web page. After editing, the administratoruses a “send update” button or similar technique to cause the directorconsole module 512 to send messages for the changed objects andproperties to the routing network 110 via the API.

In another embodiment, the information provider 108 and dynamic contentprovider 116 work together as the input source 210 by using a contentmanagement system module 514 to access the API. Preferably, the contentmanagement system module 514 resides at the information provider 108 andreceives object property updates from the dynamic content provider 116.The content management system module 514 preferably updates theproperties of the live objects in the web page 118 stored at the server112 and also sends messages for the changed properties to the routingnetwork 110. In this manner, the web page 118 at the server 112 and theweb page displayed at the client 114 are updated almost simultaneously.In one embodiment, the dynamic content provider 116 sends the updatemessages to the routing network 110 instead of to the informationprovider 108. Embodiments of the system 100 can also utilize anycombination of the content management techniques described herein.

For example, the tools described above can generate a message having thefollowing code for updating the text displayed by a score object to “2”:LiveObject score = new LiveObject(“Bang$homeScoreID”);score.setProperty(“innerText”, “2”).

This code sets the innerText property of the object having object ID“Bang$homeScoreID” to “2.” The tools use the API to pass this message tothe routing network 110.

Turning now to the actions performed at the client 114, FIG. 6 is a flowchart illustrating the steps performed by an embodiment of theactivation module 124. Those of skill in the art will recognize thatdifferent embodiments may perform the steps of FIG. 6 in differentorders. The activation module 124 generally performs three functions:register object IDs with the routing network 110, handle messagesreceived by the client 114 from the network in order to update theproperties of live objects, and control communications between theclient and the network.

In order to register object IDs, the activation module 124 preferablyparses 610 the web page 118 received from the server 112 and identifiesthe object IDs of the live objects. In an alternative embodiment, theactivation module 124 identifies only a subset of the object IDs, suchas the IDs of only live objects that are currently being displayed bythe web browser 120. Alternatively, a list of object IDs may bepre-encoded in the web page in addition to the objects themselves,thereby enabling easy identification by the activation module 124. Inyet another embodiment, a user of the client 114 selects the object IDsto register.

The activation module 124 preferably opens 612 a connection between theclient 114 and the routing network 110. The activation module 124 canopen 612 this connection before or after the activation module receivesand/or parses the web page 118. In some cases, the client 114 is locatedbehind a firewall that puts a restriction on the types of connectionrequests the client can make. A firewall might, for example, block allnon-HTTP traffic. For this reason, the activation module 124 preferablywraps the connection request in an HTTP header in order to get therequest to the routing network 110 through the firewall.

The activation module 124 uses the connection between the client 114 androuting network 110 to register 614 the object IDs by communicating tothe routing network 116 a vector (e.g., a list or array) containing theidentified object IDs. In order to accomplish this task through thefirewall, the activation module 124 preferably puts the vector into astring, referred to as “object data,” and then preferably creates anHTTP message to communicate the object data to the routing network 110.A schematic example is as follows: POST / HTTP/1.1\r\n Content-Length:<length of object data> \r\n \r\n <object data>where <object data> is the object ID list. When the routing network 110receives such an HTTP request, it extracts the object data and updatesthe registry 125 to indicate that the client 114 has registered for theidentified objects.

If the web browser 120 loads 616 a new page, or otherwise terminatesdisplay of the objects on the initial page, the activation module 124associated with the initial web page preferably terminates 618 theclient's connection with the routing network 110. Those of skill in theart will recognize that this termination 618 can occur asynchronouslywith the other steps illustrated in FIG. 6. Thus, the location of steps616 and 618 represents only one possible place in the sequence of stepswhere the termination may occur.

If the connection is not terminated, the activation module 124preferably waits until it receives 618 a message from the routingnetwork 110 specifying an object ID and an update to a property of theidentified object. In one embodiment, this message is received as HTTPdata. Upon receipt of the message, the activation module 124 preferablyextracts 620 the object ID and update from the HTTP data. Then, theactivation module 124 updates 622 the property of the identified object,or causes the object to be updated, as specified by the message.

The sequence of receiving messages 618, extracting data 620, andupdating objects 622 is preferably repeated until a new page is loaded616 or the connection with the routing network 110 is otherwiseterminated. Although not shown in FIG. 6, in certain circumstances, suchas when a user action with respect to the web page 118 activates a newlive object, the activation module 124 may register new object IDs withthe routing network 110 without first downloading and parsing a newpage. In one embodiment, if the newly-loaded page contains live objects,then the process of downloading the activation module 124 and updatingthe objects as described by FIG. 6 is repeated. In an alternativeembodiment, the activation module 124 remains active at the client 114and, therefore, the client does not re-download the activation modulefrom the routing network 110. Instead, the already-present activationmodule 124 performs the live-enabling process on the new page.

FIG. 7 is a block diagram illustrating a lower-level view of the routingnetwork 110 according to an embodiment of the present invention. Thoseof skill in the art will recognize that there are many alternative waysto implement the functionality of the routing network 110. FIG. 7illustrates multiple input sources (labeled 710A-D) representative ofsources providing messages to the routing network 110, such as aninformation provider 710A and a dynamic content provider 710B. FIG. 7also illustrates multiple clients (labeled 712A-F) representative of themany clients in communication with the routing network 110 at any giveninstant.

Internally, the routing network 110 is preferably divided into one ormore clusters 714. In FIG. 7, the routing network 110 has three clusters714A, 714B, 714C, although the number of clusters can vary dependingupon the processing needs of the network. An input-side global loadbalancer 716 preferably routes messages from the input sources 710 tothe clusters 714. Similarly, a client-side global load balancer 718preferably routes connection requests from the clients 712 to theclusters 714. The load balancers 716, 718 are designed to ensure thatload is distributed among the clusters 714 according to a predeterminedheuristic. For example, the load may be distributed evenly among theclusters 714 or a more powerful cluster may be distributed a majority ofthe load. In one embodiment, one load balancer performs the functions ofthe input-side 716 and client-side 718 load balancers and utilizesconventional Domain Name System-(DNS-) based load balancing.

Each cluster 714, of which cluster 714A is representative, preferablycontains an input-side cluster load balancer 720A and a client-sidecluster load balancer 722A. The cluster load balancers 720A, 722Afunction similarly to the corresponding global load balancers 716, 718in that the input-side cluster load balancer 720A balances and routesincoming messages among one or more gateways 724A and the client-sidecluster load balancer 722A balances and routes incoming connectionrequests among one or more nodes 726A and application servers 728A.

In one embodiment, the functionality of the two client-side cluster loadbalancers 720A, 722A is provided by one component. This single-componentload balancer initially determines whether an incoming request is froman input source 710 seeking to send a message to a gateway 724A, aclient 712 seeking a connection to a node 726A, or a client seeking aconnection to an application server 728A. Then, the load balancer routesthe messages/connection requests among the gateways 724A, nodes 726A,and application servers 728A within the cluster 714. In one embodiment,the single-component load balancer provides layer seven load balancing(i.e., load balancing at the application layer). Preferably, the loadbalancing for the nodes 726A and application servers 728A are performedby the same component since, for security reasons, most client webbrowsers only permit an application (e.g., the activation module 124) totransparently connect to the location from which the application wasdownloaded.

Alternative embodiments of the routing network 110 may combine theglobal 716, 718 and cluster 720A, 722A load balancers and/or incorporatethe functionality of the load balancers into different components withinor outside of the clusters 714. In addition, alternative embodiments mayomit one or more of these load balancers. For example, having differentclusters 714 serve different customers might obviate the need for theglobal load balancers 716, 718.

The gateways 724A in the cluster 714 receive the messages from the inputsources 710 and direct the messages to the appropriate node or nodes726A. In one embodiment, each gateway 724A maintains a persistent TCPconnection to every node 726 in every cluster 714 and directs everymessage to every node. Therefore, although a gateway 724A is locatedinside a cluster 714A and receives connections via the cluster'sinput-side load balancer 720A, the gateway's scope spans the entirerouting network 110. This broad scope allows messages from any inputsource to reach any client 712.

In an alternative embodiment of the routing network 110, each gateway724 maintains a persistent TCP connection to all nodes 426 in the samecluster 714 and at least one connection to at least one gateway in eachof the other clusters. This embodiment reduces the number ofsimultaneous TCP connections maintained by each gateway 724. In anotheralternative embodiment, each cluster 714 also includes a gatekeeper (notshown in FIG. 7) that maintains connections with the gateways 724 ofother clusters. A gateway 724 forwards messages to the gatekeeper, whichthen distributes the messages to the gateways of other clusters 714.

Since a gateway 724 does not control the rate at which it receivesmessages from input sources 710, it is possible for the gateway toreceive messages faster than it can process them (i.e., send themessages to the nodes). Therefore, each gateway 724 preferably maintainsa queue 730 of messages that have been received but not yet processed inorder to avoid losing messages. In one embodiment, the gateway 724 dropsmessages if the queue 730 becomes too long. In another embodiment, thegateway 724 utilizes priorities assigned to certain messages or inputsources to determine which messages to drop.

The nodes 726 preferably transmit messages received from the gateways724 to the clients 712 that have registered in the object IDs identifiedby the messages. If no clients 712 have registered the object IDspecified by a message, the node preferably ignores the message. A node726 preferably maintains an instance of the registry 125 as a hash table732 containing the object IDs registered by clients 712 connected to thenode. In one embodiment, the hash table 732 associates each object IDwith a linked list containing one entry for each client 712 that hasregistered for that object ID. Each entry in the linked list preferablycontains a pointer to a socket representing the connection to thecorresponding client 712. As is known in the art, the pointer to thesocket, typically called a “file descriptor,” represents an address towhich the node can write in order to send the message to thecorresponding client. Preferably, the node 726 adds to the hash table732 and/or linked list every time a client 712 registers an interest inan object and deletes the corresponding entry from the hash table and/orlinked list when the client disconnects from the node or otherwiseindicates that it is no longer interested in a particular object.

Alternative embodiments of the present invention utilize other datastructures in addition to, or instead of, the hash table 732 and linkedlist, and/or may utilize different data within the data structures. Forexample, one embodiment of the routing network 110 has a hierarchy ofnodes within each cluster 714. Different nodes in the hierarchy mayhandle messages received from certain input sources 210, or processmessages sent to different clients 712. In this embodiment, the linkedlists may point to nodes lower in the hierarchy, instead of to socketsleading to the clients 712. Another embodiment lacks the node hierarchy,yet assigns certain nodes to certain input sources 210 or clients 712.

The application server 728 within each node 714 preferably serves theactivation module 124 to the clients 712 in response to client requests.In addition, the application server 728 serves any other modules thatmay be required or desired to support the environment 100. In analternative embodiment of the routing network, a single applicationserver 728 fulfills all of the client requests. This application server728 may be within a certain cluster 714 or independent of the clusters.However, this single-application-server embodiment is less desirablebecause it lacks redundancy.

Preferably, the routing network 110 utilizes conventionalsingle-processor computer systems executing the Linux operating system(OS). Preferably, each component of the routing network 110 isimplemented by a separate, dedicated computer system in order to enablethe separate optimization of the components. The input/output (I/O)functionality of the OS is preferably enhanced through the use of anon-blocking OS package such as NBIO available from the University ofCalifornia, Berkeley, Calif. Based on the assumption that connectionswith the nodes 728 are long-lived, the OS is preferably configured tonot allocate resources toward monitoring idle connections. Instead, thewell-known /dev/poll patch is preferably applied to the OS in order toprovide advanced socket polling capabilities.

Moreover, the TCP/IP stack in the OS is preferably optimized in order toquickly output messages. In one embodiment, the retransmit timer in thestack is reduced from 200 ms to 50 ms. This timer determines how longthe stack waits for an acknowledgement (ack) that a sent packet wasreceived. Due to the way the Linux kernel implements the retransmittimer, the kernel will not send pending outbound packets (even if theack has been received) until the initial retransmit timer has expired.Reducing the retransmit value minimizes the effect of this delay. If anack is not received before the retransmit timer expires, an embodimentof the present invention increases the retransmit value for the affectedTCP connection and the unacknowledged packet is retransmitted. Inaddition, the TCP/IP stack preferably utilizes Nagle's algorithmfunctionality to concatenate a number of small messages into a largermessage, thereby reducing the number of packets sent by the routingnetwork 110.

FIG. 8 is a flow chart illustrating steps performed by a node 726 in acluster 714 to perform object-based routing of a message received froman input source via the gateway 724. Initially, the node 726 receives810 the message from an input source 710. The node 726 extracts 812 theobject ID from the message. In addition, the node 726 optionallytransforms 814 the message to convert it from the format utilized by theinput source 710 into the format utilized by the activation module 124at the client 712. As described above, in one embodiment the messageformat utilized by the input source 710 is identical to the messageformat utilized by activation module 124. In this embodiment, therefore,the node 726 does not need to transform the message. In an alternativeembodiment wherein the input source 710 and activation module 124utilize different message formats, the node 726 preferably transformsthe message. The node 726 looks up 816 the hash table entrycorresponding to the extracted object and information provider IDs todetermine the linked list of clients 712 that have registered in theobject referenced by the message. Finally, the node 726 transmits 818the message to each of the registered clients 712. In an alternativeembodiment, the node 726 optionally transforms the message after, asopposed to before, looking up the registered clients in the hash table.Transforming the message at this latter stage enables the node 726 totransform the message according to the specific requirements of theregistered clients 712.

The above description is included to illustrate the operation of thepreferred embodiments and is not meant to limit the scope of theinvention. The scope of the invention is to be limited only by thefollowing claims. From the above discussion, many variations will beapparent to one skilled in the relevant art that would yet beencompassed by the spirit and scope of the invention.

1-49. (canceled)
 50. A computer method for providing dynamic contentover a network, the method comprising: providing a data representationto a client device coupled to the network, wherein the datarepresentation includes at least one live object that is recognized bythe client device and causes the client device to register for updatesof the live object with a routing network; sending an update message tothe routing network, wherein the update message identifies the liveobject and contains update data that updates a property of the liveobject such that the routing network has sufficient information toidentify the client device as a registered device and send a routedmessage containing the update data to the client device, such that theclient device processes the routed message upon receipt to update theproperty of the live object at the client device.
 51. The method ofclaim 50, wherein providing a data representation is performed by afirst source and sending an update message is performed by a secondsource.
 52. The method of claim 51, wherein the first source is acontent provider and the second source is an information provider. 53.The method of claim 50, wherein the data representation comprises a webpage for display by an Internet browser at the client device.
 54. Themethod of claim 50, wherein the live object is identified by an objectID.
 55. The method of claim 54, wherein the object ID includes anidentifier of a source of the data representation.
 56. The method ofclaim 54, wherein the object ID comprises a hierarchical namespace. 57.The method of claim 50, wherein the live object is identified as a pointin a document object model.
 58. The method of claim 50, wherein the datafor updating the property of the live object identifies the propertyrelative to a point in a document object model.
 59. The method of claim50, wherein the received data representation includes an activationmodule that is executed by the client device and is adapted to registerthe live object with the routing network.
 60. The method of claim 59,wherein the activation module identifies an object ID in the datarepresentation such that sufficient information is provided to therouting network at registration to identify the client device as aregistered device and send a routed message.
 61. The method of claim 50,wherein the update message identifies a handler for updating theproperty of the live object responsive to the update data in the updatemessage.
 62. The method of claim 61, wherein the update messageimplicitly identifies the handler.
 63. The method of claim 61, whereinthe update message explicitly identifies the handler.
 64. The method ofclaim 50, wherein the update message specifies a change to the propertyof the identified live object that is associated with a visualrepresentation of the live object at the client device.
 65. An apparatusthat provides dynamic content over a network, the apparatus comprising:a content provider that provides a data representation to a clientdevice coupled to the network, wherein the data representation includesat least one live object that is recognized by the client device andcauses the client device to register for updates of the live object witha routing network; an information provider that provides an updatemessage to the routing network, wherein the update message identifiesthe live object and contains update data that updates a property of thelive object such that the routing network has sufficient information toidentify the client device as a registered device and send a routedmessage containing the update data to the client device, such that theclient device processes the routed message upon receipt to update theproperty of the live object at the client device.
 66. The apparatus ofclaim 65, wherein the content provider is a computer device that isindependent of the information provider.
 67. The apparatus of claim 65,wherein the content provider and the information provider comprise asingle computer device.
 68. The apparatus of claim 65, wherein the datarepresentation comprises a web page for display by an Internet browserat the client device.
 69. The apparatus of claim 65, wherein the liveobject is identified by an object ID.
 70. The apparatus of claim 69,wherein the object ID includes an identifier of a source of the datarepresentation.
 71. The apparatus of claim 69, wherein the object IDcomprises a hierarchical namespace.
 72. The apparatus of claim 65,wherein the live object is identified as a point in a document objectmodel.
 73. The apparatus of claim 65, wherein the data for updating theproperty of the live object identifies the property relative to a pointin a document object model.
 74. The apparatus of claim 65, wherein thereceived data representation includes an activation module that isexecuted by the client device and is adapted to register the live objectwith the routing network.
 75. The apparatus of claim 74, wherein theactivation module identifies an object ID in the data representationsuch that sufficient information is provided to the routing network atregistration to identify the client device as a registered device andsend a routed message.
 76. The apparatus of claim 65, wherein the updatemessage identifies a handler for updating the property of the liveobject responsive to the update data in the update message.
 77. Theapparatus of claim 76, wherein the update message implicitly identifiesthe handler.
 78. The apparatus of claim 76, wherein the update messageexplicitly identifies the handler.
 79. The apparatus of claim 65,wherein the update message specifies a change to the property of theidentified live object that is associated with a visual representationof the live object at the client device.
 80. A computer-readable mediumhaving computer code embodied therein for providing dynamic content overa network, the computer program code configured to cause a computingdevice to perform operations comprising: providing a data representationto a client device coupled to the network, wherein the datarepresentation includes at least one live object that is recognized bythe client device and causes the client device to register for updatesof the live object with a routing network; sending an update message tothe routing network, wherein the update message identifies the liveobject and contains update data that updates a property of the liveobject such that the routing network has sufficient information toidentify the client device as a registered device and send a routedmessage containing the update data to the client device, such that theclient device processes the routed message upon receipt to update theproperty of the live object at the client device.
 81. Thecomputer-readable medium of claim 80, wherein providing a datarepresentation is performed by a first source and sending an updatemessage is performed by a second source.
 82. The computer-readablemedium of claim 81, wherein the first source is a content provider andthe second source is an information provider.
 83. The computer-readablemedium of claim 80, wherein the data representation comprises a web pagefor display by an Internet browser at the client device.
 84. Thecomputer-readable medium of claim 80, wherein the live object isidentified by an object ID.
 85. The computer-readable medium of claim84, wherein the object ID includes an identifier of a source of the datarepresentation.
 86. The computer-readable medium of claim 84, whereinthe object ID comprises a hierarchical namespace.
 87. Thecomputer-readable medium of claim 80, wherein the live object isidentified as a point in a document object model.
 88. Thecomputer-readable medium of claim 80, wherein the data for updating theproperty of the live object identifies the property relative to a pointin a document object model.
 89. The computer-readable medium of claim80, wherein the received data representation includes an activationmodule that is executed by the client device and is adapted to registerthe live object with the routing network.
 90. The computer-readablemedium of claim 89, wherein the activation module identifies an objectID in the data representation such that sufficient information isprovided to the routing network at registration to identify the clientdevice as a registered device and send a routed message.
 91. Thecomputer-readable medium of claim 80, wherein the update messageidentifies a handler for updating the property of the live objectresponsive to the update data in the update message.
 92. Thecomputer-readable medium of claim 91, wherein the update messageimplicitly identifies the handler.
 93. The computer-readable medium ofclaim 91, wherein the update message explicitly identifies the handler.94. The computer-readable medium of claim 80, wherein the update messagespecifies a change to the property of the identified live object that isassociated with a visual representation of the live object at the clientdevice.
 95. A device for providing dynamic content over a network, thedevice comprising: logic configured to provide a data representation toa client device coupled to the network, wherein the data representationincludes at least one live object that is recognized by the clientdevice and causes the client device to register for updates of the liveobject with a routing network; logic configured to provide an updatemessage to the routing network, wherein the update message identifiesthe live object and contains update data that updates a property of thelive object such that the routing network has sufficient information toidentify the client device as a registered device and send a routedmessage containing the update data to the client device, such that theclient device processes the routed message upon receipt to update theproperty of the live object at the client device.
 96. The device ofclaim 95, wherein the content provider is a computer device that isindependent of the information provider.
 97. The device of claim 95,wherein the content provider and the information provider comprise asingle computer device.
 98. The device of claim 95, wherein the datarepresentation comprises a web page for display by an Internet browserat the client device.
 99. The device of claim 95, wherein the liveobject is identified by an object ID.
 100. The device of claim 99,wherein the object ID includes an identifier of a source of the datarepresentation.
 101. The device of claim 99, wherein the object IDcomprises a hierarchical namespace.
 102. The device of claim 95, whereinthe live object is identified as a point in a document object model.103. The device of claim 95, wherein the data for updating the propertyof the live object identifies the property relative to a point in adocument object model.
 104. The device of claim 95, wherein the receiveddata representation includes an activation module that is executed bythe client device and is adapted to register the live object with therouting network.
 105. The device of claim 104, wherein the activationmodule identifies an object ID in the data representation such thatsufficient information is provided to the routing network atregistration to identify the client device as a registered device andsend a routed message.
 106. The device of claim 95, wherein the updatemessage identifies a handler for updating the property of the liveobject responsive to the update data in the update message.
 107. Thedevice of claim 106, wherein the update message implicitly identifiesthe handler.
 108. The device of claim 106, wherein the update messageexplicitly identifies the handler.
 109. The device of claim 95, whereinthe update message specifies a change to the property of the identifiedlive object that is associated with a visual representation of the liveobject at the client device.